using InverseClockWork.Extra.Cutscenes;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ReroutingFullScreenDialog : MonoBehaviour
{
    [SerializeField]
    private RectTransform container;
    [SerializeField]
    private RectTransform firstLine;

    private RectTransform Container { get => container; set => container = value; }
    private RectTransform FirstLine { get => firstLine; set => firstLine = value; }

    public ReroutingDialogBehaviour Host
    {
        get; set;
    }

    private int Count
    {
        get; set;
    }

    public void AddLine(string line)
    {
        if (Count > 0)
        {
            var inst = Instantiate(FirstLine);
            inst.SetParent(Container);
            //inst.GetComponent<UnityEngine.UI.Text>().text = line;

            StartCoroutine(AnimateLineIn(inst.GetComponent<UnityEngine.UI.Text>(), line));
        }
        else
        {
            firstLine.gameObject.SetActive(true);
            //firstLine.GetComponent<UnityEngine.UI.Text>().text = line;

            StartCoroutine(AnimateLineIn(firstLine.GetComponent<UnityEngine.UI.Text>(), line));
        }
        Count++;
    }

    public void Clear()
    {
        for (int i = Container.childCount - 1; i > 0; i--)
        {
            Destroy(Container.GetChild(i).gameObject);
        }
        firstLine.gameObject.SetActive(false);

        Count = 0;
    }

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            //Continue
            Destroy(Host.gameObject);
        }
    }

    private IEnumerator AnimateLineIn(UnityEngine.UI.Text line, string text)
    {
        float typeSpeed = 0.01f;
        line.text = string.Empty;

        while (line.text.Length < text.Length)
        {
            line.text += text[line.text.Length];
            yield return new WaitForSeconds(typeSpeed);
        }
    }
}
